﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using CancioneroCONFAD.DAL;
using CancioneroCONFAD.Utilidades;
using SubSonic.Repository;

namespace CancioneroCONFAD.Formularios
{
    public partial class CrearCancion : Form
    {
        SimpleRepository _repository= new SimpleRepository("Cancionero",SimpleRepositoryOptions.None);
        public CrearCancion()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {

                if (CamposValidos())
                {
                    var alabanza = new Cancion()
                                       {
                                           Artista = txtArtista.Text,
                                           TipoCancion = ObtenerTipoAlabanza(cbTipoAlabanza.SelectedItem.ToString()),
                                           Titulo = txtTitulo.Text
                                       };
                    _repository.Add(alabanza);
                    var cuerpos = RetornarCuerpos();
                    foreach (var letra in cuerpos)
                    {
                        var fragmentoCancion = new FragmentoCancion()
                                                   {
                                                       IdCancion = alabanza.Id,
                                                       Letra = letra
                                                   };
                        _repository.Add(fragmentoCancion);
                    }
                    MessageBox.Show("La alabanza " + alabanza.Titulo + " ha sido añadida exitosamente.");
                    Close();


                }
                //ppt.CreateFile("C:\\Misa",titulo,texto);
            }
            catch(Exception ex)
            {
                MessageBox.Show("Ha ocurrido un error:\n" + ex.Message, "Oops lo sentimos", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                //Close();
            }


        }

        private List<string> RetornarCuerpos()
        {
            var listaLetrasCanciones = new List<string>();
            if(!string.IsNullOrEmpty(rtCuerpo1.Text))
            {
                listaLetrasCanciones.Add(rtCuerpo1.Text);
            }

            if (!string.IsNullOrEmpty(rtCuerpo2.Text))
            {
                listaLetrasCanciones.Add(rtCuerpo2.Text);
            }

            if (!string.IsNullOrEmpty(rtCuerpo3.Text))
            {
                listaLetrasCanciones.Add(rtCuerpo3.Text);
            }

            if (!string.IsNullOrEmpty(rtCuerpo4.Text))
            {
                listaLetrasCanciones.Add(rtCuerpo4.Text);
            }
            return listaLetrasCanciones;
        }

        private bool CamposValidos()
        {
            var camposValidos = true;
            var listaErrores = "";
            if(string.IsNullOrEmpty(txtTitulo.Text))
            {
                camposValidos = false;
                listaErrores += "\nDebe colocar un titulo.";
            }
            if (string.IsNullOrEmpty(rtCuerpo1.Text) && string.IsNullOrEmpty(rtCuerpo2.Text) && string.IsNullOrEmpty(rtCuerpo3.Text) && string.IsNullOrEmpty(rtCuerpo4.Text))
            {
                camposValidos = false;
                listaErrores += "\nDebe colocar letra de la canción.";
            }

            if(cbTipoAlabanza.SelectedItem==null)
            {
                camposValidos = false;
                listaErrores += "\nDebe seleccionar el tipo de la alabanza.";
            }
            if(!camposValidos)
                MessageBox.Show("Favor verifique lo siguiente:" + listaErrores, "Revisar campos", MessageBoxButtons.OK,
                            MessageBoxIcon.Information);
            return camposValidos;
        }

        private static TipoAlabanza ObtenerTipoAlabanza(string valor)
        {
            switch (valor)
            {
                case "Adoración":
                    return TipoAlabanza.Adoracion;
                case "Moderada":
                    return TipoAlabanza.Moderada;
                default:
                    return TipoAlabanza.Jubilo;

            }
        }

        private void txtTitulo_TextChanged(object sender, EventArgs e)
        {

        }

        private void CrearCancion_Load(object sender, EventArgs e)
        {
            cbTipoAlabanza.Items.Clear();
            cbTipoAlabanza.Items.Add("Adoración");
            cbTipoAlabanza.Items.Add("Moderada");
            cbTipoAlabanza.Items.Add("Júbilo");
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            txtTitulo.Clear();
            txtArtista.Clear();
            rtCuerpo1.Clear();
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            Close();
        }
    }
}